/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trunk.view.palette;

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import trunk.model.Dessin;
import trunk.model.PaintModel;
import trunk.observer.Observer;


/**
 * Class ColorPalette 
 * 
 * Composant représentant la palette de couleur
 * 
 * @author LEFEVRE Michael
 * @author THOUE Jonathan
 */
public class ColorPalette extends ColorPaletteView implements Observer{
    
    private ColorPaletteCtrl ctrl;
    
    private Color model;
    private PaintModel Paintmodel;
    /**
     * Constructeur par défaut
     */
    public ColorPalette() {
      super();
      setColorPaletteCtrl( new ColorPaletteCtrl(this) );
    }
    /**
     * Constructeur avec lien vers le MVC principal
     * @param model - lien vers le MVC principal
     */
    public ColorPalette(PaintModel model) {
      super(model.getDessin().getPalette());
      this.model = model.getDessin().getCurrentColor();
      this.Paintmodel=model;
      setColorPaletteCtrl( new ColorPaletteCtrl(this) );
    }
    /**
     * Get Model
     * @return le model courrant du composant 
     */
    public Color getModel() {
        return model;
    }
    /**
     * Set Model
     * @param model - le model courrant du composant 
     */
    public void setModel(Color model) {
        this.model = model;
        Paintmodel.setColor(model);
    }
    /**
     * Get PaintModel
     * @return le lien vers le model général 
     */
    public PaintModel getPaintmodel() {
        return Paintmodel;
    }
    /**
     * Méthode de mise à jour de la vue
     * @param dessin - dessin courrant
     */
    @Override
    public void update(Dessin dessin) {
        this.removeAll();
        ColorButton button;
      for (Color color : dessin.getPalette()) {
           button = new ColorButton(color);
           colorButton.add(button);
           add(button);
      }
      setColorPaletteCtrl( new ColorPaletteCtrl(this) );
      currentColor = new JPanel();    
      int height = (int)(dessin.getPalette().size() /3 )+1;
      setPreferredSize(new Dimension(85,(height*20)+30));
      
      
      currentColor.setPreferredSize(new Dimension(50, 20));
      currentColor.setToolTipText("Votre couleur actuelle.");
      currentColor.setBackground(dessin.getCurrentColor());
      add(currentColor);
    }
}

